/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AccesoDatos.Datos;

import AccesoDatos.DTOs.Registro;
import AccesoDatos.excepciones.ExcepcionDatos;
import java.util.List;

/**
 *
 * @author gborrego
 */
public interface IDatos {
    /**    
    * @param sql instrucción sql (insert,delete,update) a ejecutar. Si se van a enviar parámetros deben especificarse con el caracter "?". Ejemplo campo=?.
    * @param params parámetros de la instrucción
    */
    void actualizar(String sql, Object[] params) throws ExcepcionDatos;   
    /**    
    * @param sql instrucción sql select a ejecutar. 
    * @return lista de objetos Registro
    */    
    List<Registro> consultar(String sql) throws ExcepcionDatos;  
    /**    
    * @param sql instrucción sql select a ejecutar. Si se van a enviar parámetros deben especificarse con el caracter "?". Ejemplo campo=?.
    * @return lista de objetos Registro
    */     
    List<Registro> consultar(String sql, Object[] params) throws ExcepcionDatos; 
    /**    
    * @param tabla la tabla de la BD en donde se hará la inserción. 
    * @param params los valores a insertar 
    */    
    void insert(String tabla, Object[] params) throws ExcepcionDatos;  
    /**    
    * @param tabla la tabla de la BD en donde se hará la inserción. 
    * @param sqlCampos lista de campos a insertar (separados por comas)
    * @param params los valores a insertar en el orden de aparición en a lista de campos
    */    
    void insert(String tabla,String sqlCampos, Object[] params) throws ExcepcionDatos;  
    /**    
    * @param tabla la tabla de la BD en donde se hará la actualización. 
    * @param sqlSet lista de campos a actualizar, en formato: campo1=?,campo2=?,...
    * @param sqlWhere condiciones de la cláusula where, en formato: campo1=?,campo2=?,...
    * @param params los parámetros a reemplazar en lugar de los caracteres "?" en el orden de aparición
    */     
    void update(String tabla,String sqlSet, String sqlWhere, Object[] params) throws ExcepcionDatos;  
    /**    
    * @param tabla la tabla de la BD en donde se hará la eliminación.     
    * @param sqlWhere condiciones de la cláusula where, en formato: campo1=?,campo2=?,...
    * @param params los parámetros a reemplazar en lugar de los caracteres "?" en el orden de aparición
    */      
    void delete(String tabla, String sqlWhere, Object[] params) throws ExcepcionDatos;  
}
